# Написать программу, на вход которой построчно подаются:
#  Натуральное число N — размер целочисленного массива, адрес которого должен быть равен 0x10010000 (начало области .data)
#  Затем N целых чисел — элементы массива
#  Затем — неизвестное число пар целых чисел A, B: 0⩽A⩽B<N — индексы массива, по одному в строке
#  Конец ввода — пара целых чисел A, B: A>B, не учитывается 
# Для каждой пары A⩽B программа выводит наименьший элемент массива в диапазоне от A до B включительно, пробел, адрес элемента и перевод строки

# В программе предусмотреть подпрограмму minaddr,
#  которой в a0 передаётся адрес массива, в a1 — A, в a2 — B,
#  а возвращает она в a0 — наименьшее значение массива в диапазоне, а в a1 — адрес элемента, где был найден минимум (если таких несколько, то с наименьшим индексом)


.data
array:

.text
Begin:
	li	a7, 5
	ecall
	mv	s0, a0
	la	s3, array
	bgez	s0, .notneg
	neg	s0, s0
.notneg:
	mv	s1, s0
.loop1:	blez	s1, .endloop1
	addi	s1, s1, -1
	ecall
	sw	a0, (s3)
	addi	s3, s3, 4
	b	loop1
.endloop1:
	
	mv	s2, s3
	
.loop2:	ecall
	mv	a1, a0
	ecall
	mv	a2, a0
	bgt	a1, a2, .endloop2
	bltz	a1, .loop2
	bltz	a2, .loop2
	bge	a1, s0, .loop2
	bge	a2, s0, .loop2
	sw	a1, (s3)
	addi	s3, s3, 4
	sw	a2, (s3)
	addi	s3, s3, 4
	b	loop2
.endloop2:	
	
.loop3:	ble	s3, s2, .endloop3
	la	a0, array	
	lw	a1, (s2)
	addi	s2, s2, 4
	lw	a2, (s2)
	addi	s2, s2, 4
	
	#look for
	jal	Minaddr
	li	a7, 1
	ecall
	li	a0, ' '
	li	a7, 11
	ecall
	mv	a0, a1
	li	a7, 34
	ecall
	li	a0, '\n'
	li	a7, 11
	ecall
	b	.loop3
.endloop3:	
	li	a7, 10
	ecall

Minaddr:
	addi    sp, sp, -4
        sw      ra, (sp)
	
	slli	a1, a1, 2
	add	t1, a0, a1
	slli	a2, a2, 2
	add	t2, a0, a2
	lw	a0, (t1)
	mv	a1, t1
.loop:	bge	t1, t2, .endloop
	addi	t1, t1, 4
	lw	t0, (t1)
	bge	t0, a0, .loop
	mv	a0, t0
	mv	a1, t1
	b	.loop
	
.endloop:	
	lw      ra, (sp)
        addi    sp, sp, 4
	ret	
